#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.65])
AC_INIT([pulseaudio-module-xrdp], [0.6], [xrdp-devel@googlegroups.com])
# specify config_ac.h so we don't collide with pulseaudio's config.h
AC_CONFIG_HEADERS([config_ac.h])
AC_CONFIG_SRCDIR([src])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIRS([m4])

AM_PROG_AR
AM_INIT_AUTOMAKE([-Wall foreign silent-rules])
AM_SILENT_RULES([yes])

PKG_PROG_PKG_CONFIG
if test "x$PKG_CONFIG" = "x"; then
  AC_MSG_ERROR([pkg-config not found])
fi

m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])

dnl ------------------------------------------------------------------
dnl FIND_CONFIG_H(TOP_DIRECTORY)
dnl Find the config.h file under TOP_DIRECTORY
dnl
dnl Outputs the enclosing directory. Only the first match is returned.
dnl ------------------------------------------------------------------
m4_define([FIND_CONFIG_H],
          [find $1 -type f -maxdepth 3 -type f -name config.h | \
           sed -e 's#/config.h##' -e '2,$d'])

# get system's pulseaudio version
m4_define([pa_major], [`$PKG_CONFIG --modversion libpulse | cut -d. -f1`])
m4_define([pa_minor], [`$PKG_CONFIG --modversion libpulse | cut -d. -f2`])
# pulseaudio module/lib directory
PA_LIBDIR=`$PKG_CONFIG --variable=libdir libpulse`
PA_MODDIR=`$PKG_CONFIG --variable=modlibexecdir libpulse`
PA_PREFIX=`$PKG_CONFIG --variable=prefix libpulse`

# Default system-wide autostart directory from XDG autostart specification
m4_define([XDG_AUTOSTART_DIR], /etc/xdg/autostart)

AC_SUBST([PA_MAJOR], [pa_major])
AC_SUBST([PA_MINOR], [pa_minor])
AC_SUBST([PA_MAJORMINOR], [pa_major].[pa_minor])

# Build shared libraries
LT_INIT([shared disable-static])

# Checks for programs.
AC_PROG_CXX
AC_PROG_AWK
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET

# Checks for libraries.
PKG_CHECK_MODULES([LIBPULSE], [libpulse])

m4_define([PULSE_MSG], [PULSE_DIR not specified. Follow the instructions in README.md.])

# Check PULSE_DIR is specified
AC_ARG_VAR([PULSE_DIR], [pulseaudio source code directory])
AS_IF([test x"$PULSE_DIR" == x""],
cat <<__MSG__
m4_text_box([PULSE_MSG])
__MSG__
AC_MSG_ERROR([PULSE_DIR not specified])
)

# Does PULSE_DIR appear to be valid?
AS_IF([test -e "$PULSE_DIR/src/pulsecore/macro.h"],,
      AC_MSG_WARN([PULSE_DIR may not be valid - can't find expected file]))

# Look for config.h, using PULSE_CONFIG_DIR if specified
AC_ARG_VAR([PULSE_CONFIG_DIR], [pulseaudio config.h source code directory (optional)])
AS_IF([test x"$PULSE_CONFIG_DIR" == x""],
      AC_MSG_NOTICE([PULSE_CONFIG_DIR not defined])
      AC_MSG_CHECKING([Searching for config.h under PULSE_DIR])
      PULSE_CONFIG_DIR="`FIND_CONFIG_H(\"$PULSE_DIR\")`"
      [AS_IF([test -e "$PULSE_CONFIG_DIR/config.h" ],
          AC_MSG_RESULT([$PULSE_CONFIG_DIR/config.h])
          ,
          AC_MSG_RESULT([no])
          AC_MSG_ERROR([Can't find config.h under PULSE_DIR. Define PULSE_CONFIG_DIR?]))]
      ,
      AC_MSG_NOTICE([PULSE_CONFIG_DIR is defined])
      AC_MSG_CHECKING([Looking for config.h in PULSE_CONFIG_DIR])
      [AS_IF([test -e "$PULSE_CONFIG_DIR/config.h"],
          AC_MSG_RESULT([$PULSE_CONFIG_DIR/config.h])
          ,
          AC_MSG_RESULT([no])
          AC_MSG_ERROR([Can't find config.h in PULSE_CONFIG_DIR.]))])


# use the prefix as same as pulseaudio
AC_PREFIX_PROGRAM(pulseaudio)

# copied from pulseaudio
AC_ARG_WITH(
    [module-dir],
    [AS_HELP_STRING([--with-module-dir],
        [Directory where to install the modules to (defaults to `pkg-config --variable=modlibexecdir libpulse`)])],
    [modlibexecdir=$withval], [modlibexecdir="${PA_MODDIR}"])
AC_SUBST(modlibexecdir)

AC_ARG_WITH(
    [xdgautostart-dir],
    [AS_HELP_STRING([--with-xdgautostart-dir],
                    Directory to install the desktop file (defaults to XDG_AUTOSTART_DIR))],
    [xdgautostartdir=$withval], [xdgautostartdir=XDG_AUTOSTART_DIR])
AC_SUBST(xdgautostartdir)

# Checks for header files.
AC_CHECK_HEADERS([fcntl.h limits.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h unistd.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_INT64_T
AC_TYPE_SIZE_T
AC_TYPE_UINT32_T

# Checks for library functions.
AC_CHECK_FUNCS([memset socket])

AC_CONFIG_FILES([Makefile
                 src/Makefile
                 instfiles/Makefile])
AC_OUTPUT
